Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] PR lint, tsc, prettier 검사 workflow 구현 #120

Merged
merged 13 commits into from
Nov 10, 2024

Conversation

simeunseo
Copy link
Collaborator

@simeunseo simeunseo commented Nov 9, 2024

관련 이슈 번호

작업 내용

  • root package.json에 check 명령어 추가
  • web, api 각각에 format:check, typecheck 스크립트 추가
  • turborepo pipeline에 typecheck, format:check 태스크 설정 추가
  • PR 체크를 위한 check.yml workflow 추가

PR 포인트

실행 프로세스

main, develop 브랜치에 PR을 올리면 check.yml workflow에 의해 다음 명령어가 실행됩니다.
"check": "turbo run lint typecheck format:check --parallel"

  1. Turborepo가 각 워크스페이스(apps/web, apps/api)를 확인합니다.
  2. 각 워크스페이스에서 정의된 lint, typecheck, format:check 스크립트를 찾습니다.
  3. 찾은 스크립트들을 병렬로 실행합니다.
  4. 실패시 오류 메시지를 출력합니다.

eslint 룰 수정 내용

이 이슈랑은 관계 없는 내용이지만 이 논의에 따라서 마지막 import 문 뒤에 empty line을 강제하는 eslint 룰을 하나 추가했습니다~!

shards -> shared 오타 수정

shared 폴더 및 관련 설정값들이 shards로 오타가 나있어서 수정했습니다!!

고민과 학습내용

github action 환경에서 의존성을 설치할 때, pnpm install --frozen-lockfile 옵션을 통해 lockfile(pnpm-lock.yaml)의 내용과 정확히 일치하는 의존성만 설치하여 CI/CD 환경에서 일관된 의존성을 보장합니다.

스크린샷

workflow 동작 모습 (실패 상황 재연 테스트)

image

@simeunseo simeunseo added the 🔨 Config 환경 설정 작업 label Nov 9, 2024
@simeunseo simeunseo self-assigned this Nov 9, 2024
@github-actions github-actions bot added the size/s label Nov 9, 2024
@github-actions github-actions bot added size/m and removed size/s labels Nov 9, 2024
"build": "turbo run build",
"build:apps": "turbo run build --filter=./apps/*",
"build:packages": "turbo run build --filter=./packages/*",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"",
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,md}\"",
"prepare": "husky"
"prepare": "husky",
"check": "turbo run lint typecheck format:check --parallel"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

turpo.json 을 통해 script에 대한 명령를 정의할 수 있지않나요?

lint와 typecheck를 같이 진행하는 이유가 있을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

turpo.json 을 통해 script에 대한 명령를 정의할 수 있지않나요?

이 말씀은 아래처럼 check script를 turbo.json으로 옮겼으면 좋겠다는 말씀이실까요?!

// turbo.json
{
  "tasks": {
    "check": {
      "dependsOn": ["lint", "typecheck", "format:check"],
      "cache": true
    }
  }
}

// package.json
{
  "scripts": {
    "check": "turbo run check"
  }
}

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lint와 typecheck를 같이 진행하는 이유가 있을까요?

이 workflow의 목적이 PR에 대해 lint, tsc, prettier 검사를 하는것이기 때문에 같이 진행하는것인데
같이 진행하지 않는다면 어떤 방법을 생각하시는 건지 궁금합니다!!

Comment on lines +37 to +41
run: |
echo "## Check Result" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "$(cat check.log)" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 부분은 어떤 동작을 하나요?

Copy link
Collaborator Author

@simeunseo simeunseo Nov 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 workflow의 동작 내용과 결과를 출력하는 코드입니다! PR의 Checks 탭 > Check PR > Summary 에서 볼 수 있습니다

@simeunseo
Copy link
Collaborator Author

simeunseo commented Nov 9, 2024

@seoko97 그리고 석호님께 여쭤보고싶었던 부분이 있는데요!
지금 husky에서도 lint 검사를 하고 있는데 이 workflow에서도 lint를 한번 더 검사하는건 불필요하게 느껴집니다.
그래서 둘 중 하나에서만 lint 검사를 하면 될 것 같은데, 어디로 두어야 할지 고민이 되더라구요!

개인적으로 생각해봤을 땐 husky에서는 커밋메시지, 브랜치 명 검사만 하고
상대적으로 무거운 작업인 lint 검사를 PR workflow에 두어서
좀더 빠릿빠릿한 커밋 환경을 만들면 어떨까 싶기도 했습니다!

-> husky에서 lint 제거하기로 합의 완료 (석호님께서 따로 작업 예정)

@github-actions github-actions bot added size/l and removed size/s labels Nov 9, 2024
Copy link
Collaborator

@begong313 begong313 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏿

@simeunseo simeunseo merged commit 80a3dc5 into develop Nov 10, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔨 Config 환경 설정 작업 size/l
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] PR lint, prettier, tsc 검사 workflow
3 participants